home *** CD-ROM | disk | FTP | other *** search
Text File | 2003-07-17 | 64.4 KB | 1,927 lines |
- // Copyright (C) 1997-2002 Alias|Wavefront,
- // a division of Silicon Graphics Limited.
- //
- // The information in this file is provided for the exclusive use of the
- // licensees of Alias|Wavefront. Such users have the right to use, modify,
- // and incorporate this code into other products for purposes authorized
- // by the Alias|Wavefront license agreement, without fee.
- //
- // ALIAS|WAVEFRONT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- // INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- // EVENT SHALL ALIAS|WAVEFRONT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- // CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- // DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- // TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- // PERFORMANCE OF THIS SOFTWARE.
- //
- //==================================================================
- // MayaSoftware Renderer Tab
- //==================================================================
- // Description: This procedure is called to create the mayaSoftware
- // tab for the unified render globals window.
- //
- global proc createMayaSoftwareGlobalsTab()
- {
- string $parentForm = `setParent -query`;
- scrollLayout -horizontalScrollBarThickness 0 mayaSoftwareGlobalsScrollLayout;
- columnLayout -adjustableColumn true;
-
- // Anti-aliasing quality section
- //
- frameLayout -label "Anti-aliasing Quality"
- -cll true -cl 0
- mayaSoftwareQualityFrame;
-
- createRenderQuality ("mayaSoftwareQualityFrame");
- setParent ..;
-
- // Field Options
- //
- frameLayout -label "Field Options"
- -cll true -cl 1
- -preExpandCommand "createFieldOptions (\"rgFieldOptionsFrame\")"
- rgFieldOptionsFrame;
- setParent ..;
-
- // Raytracing quality section
- //
- frameLayout -label "Raytracing Quality"
- -cll true -cl 1
- -preExpandCommand "createRayTraceQuality (\"rgRayTraceFrame\")"
- rgRayTraceFrame;
- setParent ..;
-
- // Motion Blur
- //
- frameLayout -label "Motion Blur"
- -cll true -cl 1
- -preExpandCommand "createMotionBlur (\"rgBlurFrame\")"
- rgBlurFrame;
- setParent ..;
-
- // Render Options
- //
- frameLayout -label "Render Options"
- -cll true -cl 1
- -preExpandCommand "createRenderOptions (\"rgOptionSoftwareFrame\")"
- rgOptionSoftwareFrame;
- setParent ..;
-
- // Performance Options
- //
- frameLayout -label "Memory and Performance Options"
- -cll true -cl 1
- -preExpandCommand "createPerformanceOptions (\"rgPerfFrame\")"
- rgPerfFrame;
- setParent ..;
-
- // IPR Options
- //
- frameLayout -label "IPR Options"
- -cll true -cl 1
- rgIPRFrame;
- createIPROptions("rgIPRFrame");
- setParent ..;
-
- // Render Layer/Pass Options
- //
- frameLayout -label "Render Layer/Pass Control"
- -cll true -cl 1
- -preExpandCommand "createRenderLayerOptionsUI (\"rgRenderLayerFrame\",\"mayaSoftware\")"
- rgRenderLayerFrame;
- setParent ..;
-
- if (`isTrue MayaCreatorExists`) {
- // Urchin Options
- frameLayout -label "Paint Effects Rendering Options"
- -cll true -cl 1
- -preExpandCommand "createUrchinOptions (\"rgUrchinFrame\")"
- rgUrchinFrame;
- setParent ..;
- }
-
- setParent ..;
- setParent ..;
-
- formLayout
- -edit
- -af mayaSoftwareGlobalsScrollLayout "top" 0
- -af mayaSoftwareGlobalsScrollLayout "bottom" 0
- -af mayaSoftwareGlobalsScrollLayout "left" 0
- -af mayaSoftwareGlobalsScrollLayout "right" 0
- $parentForm;
- }
-
- // Description: This procedure is called to create the render quality
- // frame in the maysSoftware tab in the unified render globals
- // window.
- //
- global proc createRenderQuality (string $parent)
- //
- // Procedure Name:
- // createRenderQuality
- //
- // Description:
- // Creates the UI in the "Anti-aliasing Quality"
- // expand/collapse section.
- //
- {
- setUITemplate -pushTemplate attributeEditorTemplate;
-
- setParent $parent;
-
- // If the UI is created already then reset the command with the correct
- // render quality + update the attribute values.
- string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
- if (`columnLayout -exists mayaSoftwareQualityLayout`) {
- updateRenderQuality;
- return;
- }
-
- columnLayout -adjustableColumn true mayaSoftwareQualityLayout;
-
- frameLayout
- -labelVisible false -borderVisible true
- -borderStyle "etchedIn"
- -collapsable false -collapse true;
- columnLayout -adjustableColumn true;
-
- optionMenuGrp -label "Quality" qualityPresetMenu;
- optionMenuGrp -edit -cc RGsetDefaultQuality -cw 2 240 qualityPresetMenu;
-
- menuItem -label "Custom" rgCustomQuality;
- menuItem -label "Preview Quality" rgPreviewQuality;
- menuItem -label "Intermediate Quality" rgIntermediateQuality;
- menuItem -label "Production Quality" rgProductionQuality;
- menuItem -label "Contrast Sensitive Production" rgContrastProductionQuality;
- menuItem -label "3D Motion Blur Production" rgMotionBlurQuality;
-
- optionMenuGrp -label "Edge Anti-aliasing"
- -cc RGsetEdgeQuality edgeMenu;
-
- menuItem -label "Low Quality";
- menuItem -label "Medium Quality";
- menuItem -label "High Quality";
- menuItem -label "Highest Quality";
-
- setParent ..;
- setParent ..;
-
- frameLayout -label "Number of Samples"
- -labelVisible true -borderVisible true
- -borderStyle "etchedIn"
- -labelAlign "center" -labelWidth 150
- -collapsable false -collapse true;
- columnLayout -adjustableColumn true;
-
- string $attr = $rendQual[0]+ ".shadingSamples";
- attrControlGrp -label "Shading"
- -attribute $attr
- -cc "updateRenderQuality"
- shadingSamplesField;
-
- $attr = $rendQual[0]+ ".maxShadingSamples";
- attrControlGrp -label "Max Shading"
- -attribute $attr
- -cc "updateRenderQuality"
- maxShadingSamplesField;
-
- $attr = $rendQual[0]+ ".visibilitySamples";
- attrControlGrp -label "3D Blur Visib."
- -attribute $attr
- -cc "updateRenderQuality"
- visSamplesField;
-
- $attr = $rendQual[0]+ ".maxVisibilitySamples";
- attrControlGrp -label "Max 3D Blur Visib."
- -attribute $attr
- -cc "updateRenderQuality"
- maxVisSamplesField;
-
- $attr = $rendQual[0]+ ".particleSamples";
- attrControlGrp -label "Particles"
- -attribute $attr
- -cc "updateRenderQuality"
- particlesSamplesField;
-
- setParent ..;
- setParent ..;
-
- frameLayout -label "Multi-pixel Filtering"
- -labelVisible true -borderVisible true
- -borderStyle "etchedIn"
- -labelAlign "center" -labelWidth 150
- -collapsable false -collapse true;
- columnLayout -adjustableColumn true;
-
- $attr = $rendQual[0]+ ".useMultiPixelFilter";
- attrControlGrp -label "Use Multi Pixel Filter"
- -attribute $attr
- -cc "updateRenderQuality"
- pixelCheck;
-
- optionMenuGrp -label "Pixel Filter Type"
- -cc "RGsetPixelFilterType" pixelFilterMenu;
-
- menuItem -label "Box Filter";
- menuItem -label "Triangle Filter";
- menuItem -label "Gaussian Filter";
- menuItem -label "Quadratic B-Spline Filter";
- menuItem -label "Plug-in Filter";
-
- $attr = $rendQual[0]+ ".pixelFilterWidthX";
- attrControlGrp -label "Pixel Filter Width X"
- -attribute $attr
- filterXField;
-
- $attr = $rendQual[0]+ ".pixelFilterWidthY";
- attrControlGrp -label "Pixel Filter Width Y"
- -attribute $attr
- filterYField;
-
- setParent ..;
- setParent ..;
-
-
- frameLayout -label "Contrast Threshold"
- -labelVisible true -borderVisible true
- -borderStyle "etchedIn"
- -labelAlign "center" -labelWidth 150
- -collapsable false -collapse true;
- columnLayout -adjustableColumn true;
-
- $attr = $rendQual[0]+ ".redThreshold";
- attrControlGrp -label "Red"
- -attribute $attr
- -cc "updateRenderQuality"
- contrastRedField;
-
- $attr = $rendQual[0]+ ".greenThreshold";
- attrControlGrp -label "Green"
- -attribute $attr
- -cc "updateRenderQuality"
- contrastGreenField;
-
- $attr = $rendQual[0]+ ".blueThreshold";
- attrControlGrp -label "Blue"
- -attribute $attr
- -cc "updateRenderQuality"
- contrastBlueField;
-
- $attr = $rendQual[0]+ ".coverageThreshold";
- attrControlGrp -label "Coverage"
- -attribute $attr
- -cc "updateRenderQuality"
- contrastCoverField;
-
- setParent ..;
- setParent ..;
-
- setParent ..;
- setUITemplate -popTemplate;
-
- // Make sure the values are right
- //
- updateRenderQuality;
- }
-
- // Description: This procedure is called to create the field options
- // frame in the maysSoftware tab in the unified render globals
- // window.
- //
- global proc createFieldOptions (string $parent)
- //
- // Procedure Name:
- // createFieldOptions
- //
- // Description:
- // Creates the UI in the "Field Options" expand/collapse section.
- //
- {
- setUITemplate -pushTemplate attributeEditorTemplate;
-
- setParent $parent;
-
- // If the UI is created already then just update the attribute values.
- //
- if (`columnLayout -exists rgFieldLayout`) {
- updateFieldOptions;
- return;
- }
-
- columnLayout -adjustableColumn true rgFieldLayout;
-
- optionMenuGrp -label "Render" -cc changeFieldOptions fieldMenu;
- menuItem -label "Frames";
- menuItem -label "Both Fields, Interlaced";
- menuItem -label "Both Fields, Separate";
- menuItem -label "Odd Fields";
- menuItem -label "Even Fields";
- scriptJob -p $parent
- -ac "defaultResolution.fields"
- "updateFieldOptions;";
-
- optionMenuGrp -label "Field Dominance"
- -cc "changeFieldOptions" fieldDominanceMenu;
- menuItem -label "Odd Field (NTSC)" rgOddField;
- menuItem -label "Even Field (PAL)" rgEvenField;
-
- radioButtonGrp -numberOfRadioButtons 2
- -label "Zeroth Scanline"
- -label1 "At Top"
- -label2 "At Bottom"
- -on1 "setAttr defaultResolution.zerothScanline 0"
- -on2 "setAttr defaultResolution.zerothScanline 1"
- scanlineButtons;
- scriptJob -p $parent
- -ac "defaultResolution.zerothScanline"
- "updateFieldOptions";
-
- separator;
-
- radioButtonGrp -numberOfRadioButtons 1
- -label ""
- -label1 "No Field Extension"
- -onc changeFieldOptions
- fieldButton1;
-
- radioButtonGrp -numberOfRadioButtons 1
- -shareCollection fieldButton1
- -label1 "Default Field Extension (o and e)"
- -onc changeFieldOptions
- fieldButton2;
-
- radioButtonGrp -numberOfRadioButtons 1
- -shareCollection fieldButton1
- -label1 "Custom Extension:"
- -onc changeFieldOptions
- fieldButton3;
-
- // This works on the above 3 radio buttons
- //
- scriptJob -p $parent
- -ac "defaultRenderGlobals.fieldExtControl"
- "updateFieldOptions;";
-
- // Make these fields small to indicate that
- // only a single character is accepted.
- // There's a SUG on this. #87405
- //
- textFieldGrp -label "Odd Field"
- -cw 2 30
- -cc changeFieldOptions oddFieldExt;
- scriptJob -p $parent
- -ac "defaultRenderGlobals.oddFieldExt"
- "updateFieldOptions;";
-
- textFieldGrp -label "Even Field"
- -cw 2 30
- -cc changeFieldOptions evenFieldExt;
- scriptJob -p $parent
- -ac "defaultRenderGlobals.evenFieldExt"
- "updateFieldOptions;";
-
- setParent ..;
- setUITemplate -popTemplate;
-
- // Make sure the values are right
- //
- updateFieldOptions;
- }
-
- // Description: This procedure is called to create the render quality
- // frame in the maysSoftware tab in the unified render globals
- // window.
- //
- global proc updateRenderQuality ()
- //
- // Procedure Name:
- // updateRenderQuality
- //
- // Description:
- // Gets the real values from the nodes and sets the UI based
- // on these values. This procedure updates all of the quality
- // values.
- //
- {
- if (!`columnLayout -exists mayaSoftwareQualityLayout`) {
- return;
- }
-
- string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
-
- int $useBlur = `getAttr defaultRenderGlobals.motionBlur`;
- int $blur2d = (`getAttr defaultRenderGlobals.motionBlurType` == 0);
- int $enableMultiPixelFilter = false;
- int $enableFilterAttrs = false;
-
- int $shadingSamples = `getAttr ($rendQual[0] + ".shadingSamples")`;
-
- int $maxShadingSamples = `getAttr ($rendQual[0] + ".maxShadingSamples")`;
-
- int $visibilitySamples = `getAttr ($rendQual[0] + ".visibilitySamples")`;
-
- int $maxVisibilitySamples
- = `getAttr ($rendQual[0] + ".maxVisibilitySamples")`;
-
- int $particleSamples = `getAttr ($rendQual[0] + ".particleSamples")`;
-
- // The edge AA settings go from 0-3 for Highest down to Low
- // But we choose to display the menu items in _ascending_ order,
- // for consistency with the order of presets.
- // Thus we must remap the values here
- //
- int $edgeAA = `getAttr ($rendQual[0] + ".edgeAntiAliasing")`;
- int $edgeMenuItem;
- if ($edgeAA == 0) { // Highest
- $edgeMenuItem = 4;
- } else if ($edgeAA == 1) { // High
- $edgeMenuItem = 3;
- } else if ($edgeAA == 2) { // Medium
- $edgeMenuItem = 2;
- } else if ($edgeAA == 3) { // Low
- $edgeMenuItem = 1;
- }
- optionMenuGrp -edit -sl $edgeMenuItem edgeMenu;
-
- int $useMultiPixelFilter
- = `getAttr ($rendQual[0] + ".useMultiPixelFilter")`;
-
- // Check against the contrast threshold values. The below
- // tolerance check is due to MEL's poor numerical accuracy.
- // E.g., setting a 0.4 value will not result in a 0.4 setting.
- //
- float $numerialTol = 0.001;
- float $highContrastRed = 0.4;
- float $highContrastGreen = 0.3;
- float $highContrastBlue = 0.6;
- float $lowContrastRed = 0.2;
- float $lowContrastGreen = 0.15;
- float $lowContrastBlue = 0.3;
-
- float $redTol = `getAttr ($rendQual[0] + ".redThreshold")`;
- float $greenTol = `getAttr ($rendQual[0] + ".greenThreshold")`;
- float $blueTol = `getAttr ($rendQual[0] + ".blueThreshold")`;
-
- float $redDiff = $redTol - $highContrastRed;
- float $greenDiff = $greenTol - $highContrastGreen;
- float $blueDiff = $blueTol - $highContrastBlue;
- int $highContrast = $redDiff < $numerialTol && $redDiff > -$numerialTol &&
- $greenDiff < $numerialTol && $greenDiff > -$numerialTol &&
- $blueDiff < $numerialTol && $blueDiff > -$numerialTol;
-
- $redDiff = $redTol - $lowContrastRed;
- $greenDiff = $greenTol - $lowContrastGreen;
- $blueDiff = $blueTol - $lowContrastBlue;
- int $lowContrast = $redDiff < $numerialTol && $redDiff > -$numerialTol &&
- $greenDiff < $numerialTol && $greenDiff > -$numerialTol &&
- $blueDiff < $numerialTol && $blueDiff > -$numerialTol;
-
- // See if the current settings of the 6 attributes we just queried
- // match any preset settings, and set the Presets menu state
- // accordingly
- //
- if ($shadingSamples == 1 && $maxShadingSamples == 1
- && $visibilitySamples == 1 && $maxVisibilitySamples == 4
- && $edgeAA == 3 && $useMultiPixelFilter == 0 && $highContrast) {
- optionMenuGrp -edit -sl 2 qualityPresetMenu; // Preview Quality
- } else if ($shadingSamples == 1 && $maxShadingSamples == 8
- && $visibilitySamples == 1 && $maxVisibilitySamples == 4
- && $edgeAA == 0 && $useMultiPixelFilter == 0 && $highContrast) {
- optionMenuGrp -edit -sl 3 qualityPresetMenu; // Intermediate Quality
- } else if ($shadingSamples == 2 && $maxShadingSamples == 8
- && $visibilitySamples == 1 && $maxVisibilitySamples == 4
- && $edgeAA == 0 && $useMultiPixelFilter == 1 && $highContrast) {
- optionMenuGrp -edit -sl 4 qualityPresetMenu; // Production Quality
- } else if ($shadingSamples == 2 && $maxShadingSamples == 8
- && $visibilitySamples == 1 && $maxVisibilitySamples == 4
- && $edgeAA == 0 && $useMultiPixelFilter == 1 && $lowContrast) {
- optionMenuGrp -edit -sl 5 qualityPresetMenu; // Contrast Sensitive Production Quality
- } else if ($shadingSamples == 3 && $maxShadingSamples == 8
- && $visibilitySamples == 1 && $maxVisibilitySamples == 4
- && $edgeAA == 0 && $useMultiPixelFilter == 1 && $highContrast) {
- optionMenuGrp -edit -sl 6 qualityPresetMenu; // Motion Blur Production
- } else {
- optionMenuGrp -edit -sl 1 qualityPresetMenu; // custom
- }
-
- int $filterType = `getAttr ($rendQual[0] + ".pixelFilterType")`;
- if ($filterType == 0) { // Box Filter
- optionMenuGrp -edit -sl 1 pixelFilterMenu;
- } else if ($filterType == 2) { // Triangle Filter
- optionMenuGrp -edit -sl 2 pixelFilterMenu;
- } else if ($filterType == 4) { // Gaussian Filter
- optionMenuGrp -edit -sl 3 pixelFilterMenu;
- } else if ($filterType == 5) { // Quadratic B-Spline Filter
- optionMenuGrp -edit -sl 4 pixelFilterMenu;
- } else if ($filterType == 1000) { // Plug-in Filter
- optionMenuGrp -edit -sl 5 pixelFilterMenu;
- }
-
- attrControlGrp -edit
- -enable ($useBlur && !$blur2d) contrastCoverField;
-
- optionMenuGrp -edit -enable $useMultiPixelFilter pixelFilterMenu;
- attrControlGrp -edit -enable $useMultiPixelFilter filterXField;
- attrControlGrp -edit -enable $useMultiPixelFilter filterYField;
-
- // Now dim out items that are not applicable,
- // based on the current settings
- //
- if ($edgeAA == 3) { // Low
- attrControlGrp -edit -enable false pixelCheck;
- optionMenuGrp -edit -enable false pixelFilterMenu;
- attrControlGrp -edit -enable false filterXField;
- attrControlGrp -edit -enable false filterYField;
- attrControlGrp -edit -enable false contrastRedField;
- attrControlGrp -edit -enable false contrastGreenField;
- attrControlGrp -edit -enable false contrastBlueField;
- attrControlGrp -edit -enable false maxShadingSamplesField;
- attrControlGrp -edit -enable ($useBlur && !$blur2d) visSamplesField;
- attrControlGrp -edit -enable false maxVisSamplesField;
- } else if ($edgeAA == 2) { // Medium
- attrControlGrp -edit -enable false pixelCheck;
- optionMenuGrp -edit -enable false pixelFilterMenu;
- attrControlGrp -edit -enable false filterXField;
- attrControlGrp -edit -enable false filterYField;
- attrControlGrp -edit -enable false contrastRedField;
- attrControlGrp -edit -enable false contrastGreenField;
- attrControlGrp -edit -enable false contrastBlueField;
- attrControlGrp -edit -enable false maxShadingSamplesField;
- attrControlGrp -edit -enable ($useBlur && !$blur2d) visSamplesField;
- attrControlGrp -edit -enable false maxVisSamplesField;
- } else if ($edgeAA == 1) { // High
- $enableMultiPixelFilter = true;
- attrControlGrp -edit -enable false contrastRedField;
- attrControlGrp -edit -enable false contrastGreenField;
- attrControlGrp -edit -enable false contrastBlueField;
- attrControlGrp -edit -enable false maxShadingSamplesField;
- attrControlGrp -edit -enable ($useBlur && !$blur2d) visSamplesField;
- attrControlGrp -edit -enable false maxVisSamplesField;
- } else if ($edgeAA == 0) { // Highest
- $enableMultiPixelFilter = true;
- attrControlGrp -edit -enable true contrastRedField;
- attrControlGrp -edit -enable true contrastGreenField;
- attrControlGrp -edit -enable true contrastBlueField;
- attrControlGrp -edit -enable true maxShadingSamplesField;
- attrControlGrp -edit -enable ($useBlur && !$blur2d) visSamplesField;
- attrControlGrp -edit -enable ($useBlur && !$blur2d) maxVisSamplesField;
- }
- if ($enableMultiPixelFilter) {
- $enableFilterAttrs = `getAttr ($rendQual[0] + ".useMultiPixelFilter")`;
- }
- attrControlGrp -edit -enable $enableMultiPixelFilter pixelCheck;
- optionMenuGrp -edit -enable $enableFilterAttrs pixelFilterMenu;
- attrControlGrp -edit -enable $enableFilterAttrs filterXField;
- attrControlGrp -edit -enable $enableFilterAttrs filterYField;
- }
-
- global proc createRayTraceQuality (string $parent)
- //
- // Procedure Name:
- // createRayTraceQuality
- //
- // Description:
- // Creates the UI in the "Raytracing Quality"
- // expand/collapse section.
- //
- {
- setUITemplate -pushTemplate attributeEditorTemplate;
-
- setParent $parent;
- string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
-
- // If the UI is created already then reset the command with the correct
- // render quality + update the attribute values.
- //
- if (`columnLayout -exists rgRaytraceLayout`) {
- updateRaytraceQuality;
- return;
- }
-
- columnLayout -adjustableColumn true rgRaytraceLayout;
-
- string $attr = $rendQual[0] + ".enableRaytracing";
- attrControlGrp -label "Raytracing"
- -attribute $attr
- -cc "updateRaytraceQuality"
- raytraceCheck;
-
- $attr = $rendQual[0] + ".reflections";
- attrControlGrp -label "Reflections"
- -attribute $attr
- reflectionsField;
-
- $attr = $rendQual[0] + ".refractions";
- attrControlGrp -label "Refractions"
- -attribute $attr
- refractionsField;
-
- $attr = $rendQual[0] + ".shadows";
- attrControlGrp -label "Shadows"
- -attribute $attr
- shadowsField;
-
- $attr = $rendQual[0] + ".rayTraceBias";
- attrControlGrp -label "Bias"
- -attribute $attr
- rayTraceBiasField;
-
- setParent ..;
- setUITemplate -popTemplate;
-
- // Make sure the values are right
- updateRaytraceQuality;
- }
-
- global proc createMotionBlur (string $parent)
- //
- // Procedure Name:
- // createMotionBlur
- //
- // Description:
- // Creates the UI in the "Motion Blur" expand/collapse section.
- //
- {
- setUITemplate -pushTemplate attributeEditorTemplate;
-
- setParent $parent;
-
- // If the UI is created already then just update attribute values.
- if (`columnLayout -exists rgBlurLayout`) {
- updateMotionBlur;
- return;
- }
-
- columnLayout -adjustableColumn true rgBlurLayout;
-
- attrControlGrp -label "Motion Blur"
- -attribute "defaultRenderGlobals.motionBlur"
- -cc "updateMotionBlur; updateRenderQuality;"
- blurCheck;
-
- radioButtonGrp -numberOfRadioButtons 1
- -label "Motion Blur Type"
- -label1 "2D"
- -onc "setAttr defaultRenderGlobals.motionBlurType 0"
- blurButton1;
- radioButtonGrp -numberOfRadioButtons 1
- -shareCollection blurButton1
- -label ""
- -label1 "3D"
- -onc "setAttr defaultRenderGlobals.motionBlurType 1"
- blurButton2;
-
- // Any time the motion blur type changes we also need to call
- // updateMotionBlur and updateRenderQuality. This is done through
- // a script job watching for an attribute change.
- //
- scriptJob -p $parent
- -ac "defaultRenderGlobals.motionBlurType"
- "updateMotionBlur; updateRenderQuality;";
-
- attrControlGrp -label "Blur by Frame"
- -attribute "defaultRenderGlobals.motionBlurByFrame"
- -hideMapButton true
- blurFrameField;
-
- attrControlGrp -label "Blur Length"
- -attribute "defaultRenderGlobals.blurLength"
- -hideMapButton true
- blurLengthField;
-
- attrControlGrp -label "Blur Sharpness"
- -attribute "defaultRenderGlobals.blurSharpness"
- -hideMapButton true
- blurSharpField;
-
- radioButtonGrp -label "Smooth"
- -numberOfRadioButtons 2
- -label1 "Alpha"
- -label2 "Color"
- -on1 "setAttr defaultRenderGlobals.smoothColor 0"
- -on2 "setAttr defaultRenderGlobals.smoothColor 1"
- blurSmoothRadio;
- scriptJob -p $parent
- -ac "defaultRenderGlobals.smoothColor" "updateMotionBlur";
-
- attrControlGrp -label "Smooth Value"
- -attribute "defaultRenderGlobals.smoothValue"
- -hideMapButton true
- blurSmoothField;
-
- attrControlGrp -label "Keep Motion Vectors"
- -attribute "defaultRenderGlobals.keepMotionVector"
- blurVectorCheck;
-
- if(!`about -mac`){
- attrControlGrp -label "Use 2d Blur Memory Limit"
- -attribute "defaultRenderGlobals.useBlur2DMemoryCap"
- -cc "updateMotionBlur"
- blurMemoryCapCheck;
-
- attrControlGrp -label "2d Blur Memory Limit"
- -attribute "defaultRenderGlobals.blur2DMemoryCap"
- -hideMapButton true
- blurMemoryCapField;
- }
-
- setParent ..;
- setUITemplate -popTemplate;
-
- // Make sure the values are right
- //
- updateMotionBlur;
- }
-
- global proc createRenderOptions (string $parent)
- //
- // Procedure Name:
- // createRenderOptions
- //
- // Description:
- // Creates the UI in the "Render Options" expand/collapse section.
- //
- {
- setUITemplate -pushTemplate attributeEditorTemplate;
-
- setParent $parent;
-
- if (`columnLayout -exists rgOptionsLayout`) {
- return;
- }
-
- columnLayout -adjustableColumn true rgOptionsLayout;
-
- // Post Processing
- //
- frameLayout -label "Post Processing"
- -cll false -cl false;
-
- columnLayout -adjustableColumn true;
-
- attrNavigationControlGrp -l "Environment Fog"
- -at defaultRenderGlobals.fogGeometry envFogControl;
- if (`isTrue MayaCreatorExists`) {
- attrControlGrp -label "Apply Fog in Post"
- -attribute "defaultRenderGlobals.applyFogInPost"
- -cc "attrControlGrp -edit -enable `getAttr defaultRenderGlobals.applyFogInPost` postFogBlurField"
- applyFogInPostCheck;
- attrControlGrp -label "Post Fog Blur"
- -attribute "defaultRenderGlobals.postFogBlur"
- -hideMapButton true
- -enable `getAttr defaultRenderGlobals.applyFogInPost`
- postFogBlurField;
- separator;
- }
-
- setParent ..; // from columnLayout
- setParent ..; // from frameLayout "Post Processing"
-
- // Cameras
- //
- frameLayout -label "Camera"
- -cll false -cl false;
-
- attrControlGrp -label "Ignore Film Gate"
- -attribute "defaultRenderGlobals.ignoreFilmGate"
- filmGateCheck;
-
- setParent ..; // from frameLayout "Camera"
-
- // Lights and Shadows
- //
- frameLayout -label "Lights and Shadows"
- -cll false -cl false;
-
- columnLayout -adjustableColumn true;
-
- attrControlGrp -label "Shadows Obey Light Linking"
- -attribute "defaultRenderGlobals.shadowsObeyLightLinking"
- shadowLightLinkCheck;
-
- attrControlGrp -label "Enable Depth Maps"
- -attribute "defaultRenderGlobals.enableDepthMaps"
- depthMapCheck;
-
- setParent ..; // from columnLayout
-
- setParent ..; // from frameLayout "Lights and Shadows"
-
- // Color/Compositing
- //
- frameLayout -label "Color/Compositing"
- -cll false -cl false;
-
- columnLayout -adjustableColumn true;
-
- attrControlGrp -label "Gamma Correction"
- -attribute "defaultRenderGlobals.gammaCorrection"
- -hideMapButton true
- gammaField;
-
- attrControlGrp -label "Clip Final Shaded Color"
- -attribute "defaultRenderGlobals.clipFinalShadedColor"
- clipCheck;
-
- attrControlGrp -label "Jitter Final Color"
- -attribute "defaultRenderGlobals.jitterFinalColor"
- jitterColor;
-
-
- checkBoxGrp -label1 "Premultiply"
- -cc "mayaSoftwarePremultiplyCtrlChanged"
- mayaSoftwarePremultiplyCtrl;
-
- scriptJob -p "mayaSoftwarePremultiplyCtrl"
- -ac "defaultRenderGlobals.composite"
- "updateMayaSoftwarePremultiplyCtrl";
-
- attrControlGrp -label "Premultiply Threshold"
- -attribute "defaultRenderGlobals.compositeThreshold"
- -hideMapButton true
- premultiplyThresholdCtrl;
-
- setParent ..; // from columnLayout
-
- setParent ..; // from frameLayout "Color/Compositing"
-
- // update the premultiply controls
- //
- updateMayaSoftwarePremultiplyCtrl();
-
- setParent ..;
- setUITemplate -popTemplate;
- }
-
- // Description: This procedure is called when the "Premultiply" control
- // is changed by the user.
- //
- global proc mayaSoftwarePremultiplyCtrlChanged()
- {
- int $premultiply =
- `checkBoxGrp -query -value1 mayaSoftwarePremultiplyCtrl`;
- int $composite = !$premultiply;
- setAttr defaultRenderGlobals.composite $composite;
- attrControlGrp -edit -enable $composite premultiplyThresholdCtrl;
- }
-
- // Description: This procedure is called when the attribute
- // renderGlobals.composite
- // is changed and we need to update the "Premultiply" control
- // to reflect this change.
- //
- global proc updateMayaSoftwarePremultiplyCtrl()
- {
- int $composite = `getAttr defaultRenderGlobals.composite`;
- int $premultiply = !$composite;
- checkBoxGrp -edit -value1 $premultiply mayaSoftwarePremultiplyCtrl;
- attrControlGrp -edit -enable $composite premultiplyThresholdCtrl;
- }
-
- global proc createPerformanceOptions (string $parent)
- //
- // Procedure Name:
- // createPerformanceOptions
- //
- // Description:
- // Creates the UI in the "Memory and Performance Options"
- // expand/collapse section.
- //
- {
- setUITemplate -pushTemplate attributeEditorTemplate;
-
- setParent $parent;
-
- // If the UI is created already then just update the attribute values.
- //
- if (`columnLayout -exists rgPerformanceLayout`) {
- return;
- }
-
- columnLayout -adjustableColumn true rgPerformanceLayout;
-
- frameLayout -label "Tessellation"
- -labelVisible true -borderVisible true
- -borderStyle "etchedIn"
- -labelAlign "center" -labelWidth 100
- -collapsable false -collapse true;
- columnLayout -adjustableColumn true;
-
- attrControlGrp -label "Use File Cache"
- -attribute "defaultRenderGlobals.useFileCache"
- cacheCheck;
-
- attrControlGrp -label "Optimize Instances"
- -attribute "defaultRenderGlobals.optimizeInstances"
- optCheck;
-
- attrControlGrp -label "Reuse Tessellations"
- -attribute "defaultRenderGlobals.reuseTessellations"
- reuseCheck;
-
- attrControlGrp -label "Use Displacement Bounding Box"
- -attribute "defaultRenderGlobals.useDisplacementBoundingBox"
- dispBBCheck;
-
- setParent ..;
- setParent ..;
-
- frameLayout -label "Ray Tracing"
- -labelVisible true -borderVisible true
- -borderStyle "etchedIn"
- -labelAlign "center" -labelWidth 100
- -collapsable false -collapse true;
- columnLayout -adjustableColumn true;
-
- attrControlGrp -label "Recursion Depth"
- -attribute "defaultRenderGlobals.recursionDepth"
- -hideMapButton true
- recursionDepth;
-
- attrControlGrp -label "Leaf Primitives"
- -attribute "defaultRenderGlobals.leafPrimitives"
- -hideMapButton true
- leafPrim;
-
- attrControlGrp -label "Subdivision Power"
- -attribute "defaultRenderGlobals.subdivisionPower"
- -hideMapButton true
- subPower;
-
- setParent ..;
- setParent ..;
-
- frameLayout -label "Multi Processing"
- -labelVisible true -borderVisible true
- -borderStyle "etchedIn"
- -labelAlign "center" -labelWidth 100
- -collapsable false -collapse true;
- columnLayout -adjustableColumn true;
-
- checkBoxGrp -numberOfCheckBoxes 1
- -label1 "Use All Available CPUs"
- -cc "setAttr defaultRenderGlobals.numCpusToUse (#1 ? 0 : 1)"
- numCpusCheckBox;
-
- attrControlGrp -label "Num. CPUs to Use"
- -attribute "defaultRenderGlobals.numCpusToUse"
- -cc "updateMayaSoftwareNumCpusSlider(`getAttr defaultRenderGlobals.numCpusToUse`);"
- -hideMapButton true
- numCpusSlider;
-
- updateMayaSoftwareNumCpusSlider(`getAttr defaultRenderGlobals.numCpusToUse`);
-
- setParent ..;
- setParent ..;
-
- setParent ..;
- setUITemplate -popTemplate;
- }
-
- global proc createIPROptions (string $parent)
- //
- // Procedure Name:
- // createIPROptions
- //
- // Description:
- // Creates the UI in the "IPR Render Globals"
- // expand/collapse section.
- //
- {
- setUITemplate -pushTemplate attributeEditorTemplate;
-
- setParent $parent;
-
- // If the UI is created already then just update the attribute values.
- if (`columnLayout -exists rgIPRLayout`) {
- updateIPROptions;
- return;
- }
-
- columnLayout -adjustableColumn true rgIPRLayout;
-
- checkBoxGrp -numberOfCheckBoxes 1
- -label1 "Render Shading, Lighting and Glow"
- -cc "updateIPRShadingOptionVar"
- iprShadingCheck;
-
- checkBoxGrp -numberOfCheckBoxes 1
- -label1 "Render Shadow Maps"
- -cc "updateIPRShadowOptionVar"
- iprShadowCheck;
-
- checkBoxGrp -numberOfCheckBoxes 1
- -label1 "Render 2D Motion Blur"
- -cc "updateIPR2dBlurOptionVar"
- ipr2DBlurCheck;
-
- setParent ..;
- setUITemplate -popTemplate;
-
- // Make sure the values are right
- //
- updateIPROptions;
- }
-
- global proc createUrchinOptions (string $parent)
- //
- // Procedure Name:
- // createUrchinOptions
- //
- // Description:
- // Creates the UI in the "Paint Effects Rendering Options"
- // expand/collapse section.
- //
- {
- setUITemplate -pushTemplate attributeEditorTemplate;
-
- setParent $parent;
-
- // If the UI is created already then just update the attribute values.
- if (`columnLayout -exists rgUrchinLayout`) {
- updateUrchinOptions;
- return;
- }
-
- columnLayout -adjustableColumn true rgUrchinLayout;
-
- attrControlGrp -label "Enable Stroke Rendering"
- -attribute "defaultRenderGlobals.enableStrokeRender"
- -cc "updateUrchinOptions;"
- enableStrokesCheck;
-
- attrControlGrp -label "Oversample"
- -attribute "defaultRenderGlobals.oversamplePaintEffects"
- -cc "updateUrchinOptions;"
- oversamplePaintEffectsCheck;
-
- attrControlGrp -label "Oversample Post Filter"
- -attribute "defaultRenderGlobals.oversamplePfxPostFilter"
- -changeCommand "updateUrchinOptions;"
- oversamplePfxPostFilterCheck;
-
- attrControlGrp -label "Only Render Strokes"
- -attribute "defaultRenderGlobals.onlyRenderStrokes"
- -cc "updateUrchinOptions;"
- onlyStrokesCheck;
-
- textFieldGrp -label "Read This Depth File"
- -cc "setRenderGlobalsDepthFile"
- depthStrokesCheck;
-
- setParent ..;
- setUITemplate -popTemplate;
-
- // Make sure the values are right
- //
- updateUrchinOptions;
- }
-
- // Description: This procedure is called when a particular
- // quality preset is chosen in the render quality frame.
- // It sets some attributes according to the chosen quality preset.
- //
- global proc RGsetDefaultQuality ()
- {
- string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
- string $curr = `optionMenuGrp -q -v qualityPresetMenu`;
- if ($curr == "Preview Quality") {
- setAttr ($rendQual[0] + ".edgeAntiAliasing") 3;
- setAttr ($rendQual[0] + ".useMultiPixelFilter") 0;
- setAttr ($rendQual[0] + ".shadingSamples") 1;
- setAttr ($rendQual[0] + ".maxShadingSamples") 1;
- setAttr ($rendQual[0] + ".visibilitySamples") 1;
- setAttr ($rendQual[0] + ".maxVisibilitySamples") 4;
- setAttr ($rendQual[0] + ".redThreshold") 0.4;
- setAttr ($rendQual[0] + ".greenThreshold") 0.3;
- setAttr ($rendQual[0] + ".blueThreshold") 0.6;
- setAttr ($rendQual[0] + ".reflections") 1;
- setAttr ($rendQual[0] + ".refractions") 6;
- setAttr ($rendQual[0] + ".shadows") 2;
- } else if ($curr == "Intermediate Quality") {
- setAttr ($rendQual[0] + ".edgeAntiAliasing") 0;
- setAttr ($rendQual[0] + ".useMultiPixelFilter") 0;
- setAttr ($rendQual[0] + ".shadingSamples") 1;
- setAttr ($rendQual[0] + ".maxShadingSamples") 8;
- setAttr ($rendQual[0] + ".visibilitySamples") 1;
- setAttr ($rendQual[0] + ".maxVisibilitySamples") 4;
- setAttr ($rendQual[0] + ".redThreshold") 0.4;
- setAttr ($rendQual[0] + ".greenThreshold") 0.3;
- setAttr ($rendQual[0] + ".blueThreshold") 0.6;
- setAttr ($rendQual[0] + ".reflections") 1;
- setAttr ($rendQual[0] + ".refractions") 6;
- setAttr ($rendQual[0] + ".shadows") 2;
- } else if ($curr == "Production Quality") {
- setAttr ($rendQual[0] + ".edgeAntiAliasing") 0;
- setAttr ($rendQual[0] + ".useMultiPixelFilter") 1;
- setAttr ($rendQual[0] + ".shadingSamples") 2;
- setAttr ($rendQual[0] + ".maxShadingSamples") 8;
- setAttr ($rendQual[0] + ".visibilitySamples") 1;
- setAttr ($rendQual[0] + ".maxVisibilitySamples") 4;
- setAttr ($rendQual[0] + ".redThreshold") 0.4;
- setAttr ($rendQual[0] + ".greenThreshold") 0.3;
- setAttr ($rendQual[0] + ".blueThreshold") 0.6;
- setAttr ($rendQual[0] + ".reflections") 10;
- setAttr ($rendQual[0] + ".refractions") 10;
- setAttr ($rendQual[0] + ".shadows") 10;
- } else if ($curr == "Contrast Sensitive Production") {
- setAttr ($rendQual[0] + ".edgeAntiAliasing") 0;
- setAttr ($rendQual[0] + ".useMultiPixelFilter") 1;
- setAttr ($rendQual[0] + ".shadingSamples") 2;
- setAttr ($rendQual[0] + ".maxShadingSamples") 8;
- setAttr ($rendQual[0] + ".visibilitySamples") 1;
- setAttr ($rendQual[0] + ".maxVisibilitySamples") 4;
- setAttr ($rendQual[0] + ".redThreshold") 0.2;
- setAttr ($rendQual[0] + ".greenThreshold") 0.15;
- setAttr ($rendQual[0] + ".blueThreshold") 0.3;
- setAttr ($rendQual[0] + ".reflections") 10;
- setAttr ($rendQual[0] + ".refractions") 10;
- setAttr ($rendQual[0] + ".shadows") 10;
- } else if ($curr == "3D Motion Blur Production") {
- setAttr ($rendQual[0] + ".edgeAntiAliasing") 0;
- setAttr ($rendQual[0] + ".useMultiPixelFilter") 1;
- setAttr ($rendQual[0] + ".shadingSamples") 3;
- setAttr ($rendQual[0] + ".maxShadingSamples") 8;
- setAttr ($rendQual[0] + ".visibilitySamples") 1;
- setAttr ($rendQual[0] + ".maxVisibilitySamples") 4;
- setAttr ($rendQual[0] + ".redThreshold") 0.4;
- setAttr ($rendQual[0] + ".greenThreshold") 0.3;
- setAttr ($rendQual[0] + ".blueThreshold") 0.6;
- setAttr ($rendQual[0] + ".reflections") 10;
- setAttr ($rendQual[0] + ".refractions") 10;
- setAttr ($rendQual[0] + ".shadows") 10;
- }
- updateRenderQuality;
-
- if (`columnLayout -exists rgRaytraceLayout`) updateRaytraceQuality;
- }
-
- // Description: This procedure is called when a particular
- // edge quality is chosen in the render quality frame.
- // It sets some attributes according to the chosen edge quality.
- //
- global proc RGsetEdgeQuality()
- {
- string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
- string $curr = `optionMenuGrp -q -v edgeMenu`;
- if ($curr == "Low Quality") {
- setAttr ($rendQual[0] + ".edgeAntiAliasing") 3;
- } else if ($curr == "Medium Quality") {
- setAttr ($rendQual[0] + ".edgeAntiAliasing") 2;
- } else if ($curr == "High Quality") {
- setAttr ($rendQual[0] + ".edgeAntiAliasing") 1;
- } else {
- setAttr ($rendQual[0] + ".edgeAntiAliasing") 0;
- }
-
- updateRenderQuality;
- }
-
- // Description: This procedure is called when the pixel filter is
- // chosen. The quality render globals' pixelFilterType attribute
- // will be set accordingly.
- //
- global proc RGsetPixelFilterType()
- {
- string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
- string $curr = `optionMenuGrp -q -v pixelFilterMenu`;
- if ($curr == "Box Filter") {
- setAttr ($rendQual[0] + ".pixelFilterType") 0;
- } else if ($curr == "Triangle Filter") {
- setAttr ($rendQual[0] + ".pixelFilterType") 2;
- } else if ($curr == "Gaussian Filter") {
- setAttr ($rendQual[0] + ".pixelFilterType") 4;
- } else if ($curr == "Quadratic B-Spline Filter") {
- setAttr ($rendQual[0] + ".pixelFilterType") 5;
- } else if ($curr == "Plug-in Filter") {
- setAttr ($rendQual[0] + ".pixelFilterType") 1000;
- }
- updateRenderQuality;
- }
-
- global proc updateFieldOptions ()
- //
- // Procedure Name:
- // updateFieldOptions
- //
- // Description:
- // Gets the real values from the nodes and sets the UI based
- // on these values. This procedure updates all of the field
- // values.
- //
- {
- int $fieldType = `getAttr defaultResolution.fields` + 1;
- int $useFields = ($fieldType != 1);
- int $autoInterlace = ($fieldType == 4);
-
- // Because of 123444, the ordering of the menu and the actual
- // saved fields values are not the same, which is why the
- // below convoluted code.
- //
- switch ($fieldType) {
- case 1:
- optionMenuGrp -edit -select 1 fieldMenu;
- break;
- case 2:
- case 3:
- optionMenuGrp -edit -select ($fieldType + 2) fieldMenu;
- break;
- case 4:
- case 5:
- optionMenuGrp -edit -select ($fieldType - 2) fieldMenu;
- break;
- }
-
-
- optionMenuGrp -edit -enable $useFields fieldDominanceMenu;
- int $oddFieldFirst = `getAttr defaultResolution.oddFieldFirst`;
- int $whichDominance = $oddFieldFirst ? 1 : 2;
- optionMenuGrp -edit -sl $whichDominance fieldDominanceMenu;
-
- if ($fieldType == 1 || $fieldType == 4)
- radioButtonGrp -edit
- -select (`getAttr defaultResolution.zerothScanline` + 1)
- -enable 0
- scanlineButtons;
- else
- radioButtonGrp -edit
- -select (`getAttr defaultResolution.zerothScanline` + 1)
- -enable 1
- scanlineButtons;
-
- int $useCustom = 0;
- if (`getAttr "defaultRenderGlobals.fieldExtControl"` == 1)
- radioButtonGrp -edit -select 1 fieldButton1;
- else if (`getAttr "defaultRenderGlobals.fieldExtControl"` == 0)
- radioButtonGrp -edit -select 1 fieldButton2;
- else {
- radioButtonGrp -edit -select 1 fieldButton3;
- $useCustom = 1;
- }
-
- radioButtonGrp -edit -enable ($useFields && !$autoInterlace) fieldButton1;
- radioButtonGrp -edit -enable ($useFields && !$autoInterlace) fieldButton2;
- radioButtonGrp -edit -enable ($useFields && !$autoInterlace) fieldButton3;
-
- textFieldGrp -edit
- -text `getAttr "defaultRenderGlobals.oddFieldExt"`
- -enable ($useFields && $useCustom)
- oddFieldExt;
-
- textFieldGrp -edit
- -text `getAttr "defaultRenderGlobals.evenFieldExt"`
- -enable ($useFields && $useCustom)
- evenFieldExt;
- }
-
- global proc changeFieldOptions ()
- //
- // Procedure Name:
- // changeFieldOptions
- //
- // Description:
- // This procedure is called when the user changes any of the
- // values for fields. It sets the internal representation
- // and then updates the example to show the changes.
- //
- {
- // Note that we stored the fields values internally different
- // from what's presented in the menu. That is why the below
- // convoluted case statement. Sorry - see 123444.
- int $realFieldsValue = (`optionMenuGrp -q -sl fieldMenu` - 1);
- switch ($realFieldsValue) {
- case 0:
- setAttr "defaultResolution.fields" 0;
- break;
- case 1:
- case 2:
- setAttr "defaultResolution.fields" ($realFieldsValue + 2);
- break;
- case 3:
- case 4:
- setAttr "defaultResolution.fields" ($realFieldsValue - 2);
- break;
- }
-
-
- int $whichDominance = `optionMenuGrp -q -sl fieldDominanceMenu`;
- if ($whichDominance == 1) {
- setAttr "defaultResolution.oddFieldFirst" true;
- } else {
- setAttr "defaultResolution.oddFieldFirst" false;
- }
- setAttr "defaultResolution.zerothScanline"
- (`radioButtonGrp -q -sl scanlineButtons` -1);
-
- if (`radioButtonGrp -q -sl fieldButton1`) {
- setAttr "defaultRenderGlobals.fieldExtControl" 1;
- } else if (`radioButtonGrp -q -sl fieldButton2`) {
- setAttr "defaultRenderGlobals.fieldExtControl" 0;
- } else {
- setAttr "defaultRenderGlobals.fieldExtControl" 2;
- }
-
- string $test = `textFieldGrp -q -text oddFieldExt`;
- if (size($test) > 1) {
- catch (error ("Field extensions must be a single character."));
- } else {
- setAttr -type "string" "defaultRenderGlobals.oddFieldExt" $test;
- }
-
- $test = `textFieldGrp -q -text evenFieldExt`;
- if (size($test) > 1) {
- catch (error ("Field extensions must be a single character."));
- } else {
- setAttr -type "string" "defaultRenderGlobals.evenFieldExt" $test;
- }
-
- updateFieldOptions;
- updateFileOutputFeedback;
- }
-
- global proc updateFileOutputFeedback ()
- //
- // Procedure Name:
- // updateFileOutputFeedback
- //
- // Description:
- // Updates lines of text that allow the user to see
- // what files are going to be created when they render.
- //
- {
- string $title1 = " File Name: ";
- string $title2 = " To: ";
-
- string $prefix = `textFieldGrp -query -text mayaSoftwareFileName`;
- if ($prefix == "(not set; using filename)") {
- string $sceneName = `file -q -sn`;
- if (size($sceneName) == 0) {
- $prefix = "untitled";
- } else {
- string $buffer[];
- tokenize $sceneName "/\\" $buffer;
- string $tail = $buffer[size($buffer) - 1];
- tokenize $tail "." $buffer;
- $tail = $buffer[0];
- $prefix = $tail;
- }
- }
-
- // Image extension
- //
- string $imageType;
- int $imageUse = `getAttr "defaultRenderGlobals.outFormatControl"`;
- if ($imageUse == 1) {
- // Don't use extension
- $imageType = "";
- } else if ($imageUse == 0) {
- // Show the extension
- global string $imgExt[]; // This is the actual file extension
- global int $imgExtNum[]; // This is the corresponding internal value
-
- int $imageNum = `getAttr "defaultRenderGlobals.imageFormat"`;
- for ($i=0; $i < size($imgExtNum); ++$i) {
- if ($imageNum == $imgExtNum[$i]) {
- $imageType = "."+$imgExt[$i];
- break;
- }
- }
- } else if ($imageUse == 2) {
- // User specified
- //
- $imageType = "."+`getAttr "defaultRenderGlobals.outFormatExt"` ;
- }
-
- // Frames number extension
- string $frame1 = "";
- string $frame2 = "";
- int $useAnim = `getAttr "defaultRenderGlobals.animation"`;
- if ($useAnim) {
-
- // if useAnim, make sure it's not a movie format, or else
- // bad extension names will be printed out to the window.
- //
- int $imgFormat = `getAttr "defaultRenderGlobals.imageFormat"`;
- if ($imgFormat == 21 || $imgFormat == 22 || $imgFormat == 23)
- $useAnim = 0;
- }
- if ($useAnim) {
- float $byf = `getAttr defaultRenderGlobals.byFrameStep`;
- if ($byf == 0.0) $byf = 0.00001;
-
- int $pad = `getAttr "defaultRenderGlobals.extensionPadding"`;
- int $f1 = `getAttr "defaultRenderGlobals.startFrame"`;
- int $f2 = `getAttr "defaultRenderGlobals.endFrame"`;
- int $numFrames = ($f2 - $f1) / $byf;
-
- // Check to see if the numbers are being modified
- if (`getAttr "defaultRenderGlobals.modifyExtension"`) {
- $f1 = `getAttr defaultRenderGlobals.startExtension`;
- $f2 = $f1 + ($numFrames * `getAttr defaultRenderGlobals.byExtension`);
- }
-
- // Convert to strings
- //
- $frame1 = $f1;
- $frame2 = $f2;
-
- // Pad the numbers
- for ($i=size($frame1); $i<$pad; $i++) {
- $frame1 = "0"+$frame1;
- }
- if (`getAttr "defaultRenderGlobals.periodInExt"`)
- $frame1 = "."+$frame1;
-
- for ($i=size($frame2); $i<$pad; $i++) {
- $frame2 = "0"+$frame2;
- }
- if (`getAttr "defaultRenderGlobals.periodInExt"`)
- $frame2 = "."+$frame2;
- }
-
- // Check for fields
-
- string $fieldExt = "";
- int $whichFields = `getAttr defaultResolution.fields`;
- int $useFields = ($whichFields != 0);
- int $useFieldExt = (`getAttr "defaultRenderGlobals.fieldExtControl"` != 1);
- int $defFieldExt = (`getAttr "defaultRenderGlobals.fieldExtControl"` == 0);
- int $useCustom = (`getAttr "defaultRenderGlobals.fieldExtControl"` == 2);
-
- // Note that I am not using a "." in front of these.
- // That's the way the code works now.
- // I think that there should be a "."
- //
- if ($useFields && $useFieldExt) {
- // Add fields to the file name
- if ($defFieldExt) {
- if ($whichFields == 1) $fieldExt = "o";
- if ($whichFields == 2) $fieldExt = "e";
- if ($whichFields == 3 || $whichFields == 4) $fieldExt = "e (o)";
- } else if ($useCustom) {
- if ($whichFields == 1) $fieldExt = `getAttr "defaultRenderGlobals.oddFieldExt"`;
- if ($whichFields == 2) $fieldExt = `getAttr "defaultRenderGlobals.evenFieldExt"`;
- if ($whichFields == 3 || $whichFields == 4) $fieldExt = `getAttr "defaultRenderGlobals.oddFieldExt"`
- + " (" + `getAttr "defaultRenderGlobals.evenFieldExt"` + ")";
- }
- }
-
- // Now put them all together to show what is going to happen
- int $frameBeforeExt = `getAttr "defaultRenderGlobals.putFrameBeforeExt"`; // 0=ext.frame, 1=frame.ext
- if ($frameBeforeExt == 0) {
- text -edit -label ($title1+$prefix+$imageType+$frame1+$fieldExt) exampleText1;
- if ($useAnim) {
- text -edit -label ($title2+$prefix+$imageType+$frame2+$fieldExt) exampleText2;
- } else {
- text -edit -label "" exampleText2;
- }
- } else {
- text -edit -label ($title1+$prefix+$frame1+$fieldExt+$imageType) exampleText1;
- if ($useAnim) {
- text -edit -label ($title2+$prefix+$frame2+$fieldExt+$imageType) exampleText2;
- } else {
- text -edit -label "" exampleText2;
- }
- }
- }
-
- global proc updateRaytraceQuality ()
- //
- // Procedure Name:
- // updateRaytraceQuality
- //
- // Description:
- // Gets the real values from the nodes and sets the UI based
- // on these values. This procedure updates all of the quality
- // values.
- //
- {
- string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
- int $useRT = `getAttr ($rendQual[0] + ".enableRaytracing")`;
- attrControlGrp -edit -enable $useRT reflectionsField;
- attrControlGrp -edit -enable $useRT refractionsField;
- attrControlGrp -edit -enable $useRT shadowsField;
- attrControlGrp -edit -enable $useRT rayTraceBiasField;
- }
-
- global proc updateMotionBlur ()
- //
- // Procedure Name:
- // updateMotionBlur
- //
- // Description:
- // Gets the real values from the nodes and sets the UI based
- // on these values. This procedure updates all of the motion
- // blur values.
- //
- {
- int $useBlur = `getAttr defaultRenderGlobals.motionBlur`;
- // checkBoxGrp -edit -v1 $useBlur blurCheck;
-
- int $blur2d = (`getAttr defaultRenderGlobals.motionBlurType` == 0);
- if ($blur2d) {
- radioButtonGrp -edit -select 1 blurButton1;
- } else {
- radioButtonGrp -edit -select 1 blurButton2;
- }
-
- radioButtonGrp -edit -enable $useBlur blurButton1;
- radioButtonGrp -edit -enable $useBlur blurButton2;
-
- int $keepMotionVector = (`getAttr defaultRenderGlobals.keepMotionVector` == 1);
- if ($useBlur && $blur2d && $keepMotionVector) {
- global string $imgExt[]; // This is the actual file extension
- global int $imgExtNum[]; // This is the corresponding internal value
-
- string $imageFormatExt = "";
-
- int $imageFormatNum = `getAttr defaultRenderGlobals.imageFormat`;
-
- // Get the corresponding imgExt for this imageFormat.
-
- for ($i = 0; $i < size($imgExtNum); $i += 1) {
- if ($imageFormatNum == $imgExtNum[$i]) {
- $imageFormatExt = $imgExt[$i];
- break;
- }
- }
-
- // Check if the image format is not IFF.
- //
- // Note: there are two IFF image types. One for 8 bit images
- // and one for 16 bit images. They both have an imgExt of iff.
-
- if ($imageFormatExt != "iff" ) {
- warning
- ("Non-IFF image formats are not supported when writing"+
- " 2D motion vectors; setting image format to IFF");
-
- // Set globals imageFormat to Maya IFF
- setAttr defaultRenderGlobals.imageFormat 7;
- }
- }
-
- attrControlGrp -edit -enable $useBlur blurFrameField;
-
- attrControlGrp -edit -enable ($useBlur && $blur2d) blurLengthField;
-
- attrControlGrp -edit -enable ($useBlur && $blur2d) blurSharpField;
-
- attrControlGrp -edit -enable ($useBlur && $blur2d) blurSmoothField;
-
- int $smoothColor = `getAttr defaultRenderGlobals.smoothColor`;
- radioButtonGrp -edit
- -enable ($useBlur && $blur2d)
- -select ($smoothColor + 1)
- blurSmoothRadio;
-
- attrControlGrp -edit -enable ($useBlur && $blur2d) blurVectorCheck;
-
- if(!`about -mac`){
- int $useMemoryCap = `getAttr defaultRenderGlobals.useBlur2DMemoryCap`;
- attrControlGrp -edit
- -enable ($useBlur && $blur2d) blurMemoryCapCheck;
-
- attrControlGrp -edit
- -enable ($useBlur && $blur2d && $useMemoryCap)
- blurMemoryCapField;
- }
-
- }
-
- global proc updateMayaSoftwareNumCpusSlider(int $value)
- //
- // Procedure Name:
- // updateMayaSoftwareNumCpusSlider
- //
- // Description:
- // When the controls for the number of CPUs are updated this
- // procedure will be invoked. The check box, field and slider
- // will be update to reflect the new value. If the value is
- // zero, all CPUs will be used.
- //
- {
- if ( `about -evalVersion` )
- {
- int $numOfCpus = `getAttr defaultRenderGlobals.numCpusToUse`;
- if ($numOfCpus != 1)
- {
- warning( "Maya Personal Learning Edition limits rendering to a single CPU");
- checkBoxGrp -e -enable false -value1 false numCpusCheckBox;
- attrControlGrp -e -enable false numCpusSlider;
- setAttr defaultRenderGlobals.numCpusToUse 1;
- }
- return;
- }
-
- if ($value == 0) {
- checkBoxGrp -e -value1 true numCpusCheckBox;
-
- attrControlGrp -e -enable false numCpusSlider;
- }
- else {
- checkBoxGrp -e -value1 false numCpusCheckBox;
-
- attrControlGrp -e -enable true numCpusSlider;
-
- if (`iprEngine -query -exists defaultIprEngine`) {
- warning -showLineNumber false
- ("IPR will need to be closed before this change in CPUs will"+
- " take effect.");
- }
- }
- }
-
- global proc updateIPROptions ()
- //
- // Procedure Name:
- // updateIPROptions
- //
- // Description:
- // Gets the real values from the option vars and sets the UI based
- // on these values. This procedure updates all of the IPR
- // values.
- //
- {
- int $doShading = `optionVar -query iprRenderShading`;
- checkBoxGrp -edit -v1 $doShading iprShadingCheck;
- checkBoxGrp -edit -v1 `optionVar -query iprRenderShadowMaps`
- -enable $doShading iprShadowCheck;
- checkBoxGrp -edit -v1 `optionVar -query iprRenderMotionBlur` ipr2DBlurCheck;
- }
-
- // Description: This procedure is used to update the IPR Shading Option
- // control.
- //
- global proc updateIPRShadingOptionVar()
- {
- int $doShading = `checkBoxGrp -q -v1 iprShadingCheck`;
- optionVar -intValue iprRenderShading $doShading;
- checkBoxGrp -edit -enable $doShading iprShadowCheck;
- }
-
- // Description: This procedure is used to update the IPR Shadow Option
- // control.
- //
- global proc updateIPRShadowOptionVar()
- {
- int $doShadows = `checkBoxGrp -q -v1 iprShadowCheck`;
- optionVar -intValue iprRenderShadowMaps $doShadows;
- }
-
- // Description: This procedure is used to update the 2D Blur Option
- // control.
- //
- global proc updateIPR2dBlurOptionVar()
- {
- int $doBlur = `checkBoxGrp -q -v1 ipr2DBlurCheck`;
- optionVar -intValue iprRenderMotionBlur $doBlur;
- }
-
- global proc updateUrchinOptions ()
- //
- // Procedure Name:
- // updateUrchinOptions
- //
- // Description:
- // Gets the real values from the nodes and sets the UI based
- // on these values. This procedure updates all of the memory
- // and performance values. I guess hard-coding the render globals
- // name is okay until we handle multiple nodes, and since every
- // other routine in this file makes that assumption, so will I.
- //
- {
-
- string $strokesFile = `getAttr defaultRenderGlobals.strokesDepthFile`;
- textFieldGrp -edit
- -fileName $strokesFile
- depthStrokesCheck;
-
- // Now update the UI greyed/enabled state.
- int $value1 = `getAttr defaultRenderGlobals.enableStrokeRender`;
- if ($value1 == 1) {
- int $value2 = `getAttr defaultRenderGlobals.onlyRenderStrokes`;
- int $value3 = `getAttr defaultRenderGlobals.oversamplePaintEffects`;
- if ($value2 == 1) {
- textFieldGrp -edit -en true depthStrokesCheck;
- }
- else {
- textFieldGrp -edit -en false depthStrokesCheck;
- }
-
- if ($value3 == 1)
- {
- attrControlGrp -edit -enable true oversamplePfxPostFilterCheck;
- }
- else
- {
- attrControlGrp -edit -enable false oversamplePfxPostFilterCheck;
- }
-
- attrControlGrp -edit -enable true onlyStrokesCheck;
- attrControlGrp -edit -enable true oversamplePaintEffectsCheck;
-
- } else {
- textFieldGrp -edit -en false depthStrokesCheck;
- attrControlGrp -edit -enable false onlyStrokesCheck;
- attrControlGrp -edit -enable false oversamplePaintEffectsCheck;
- attrControlGrp -edit -enable false oversamplePfxPostFilterCheck;
-
- }
- }
-
- // Description: This procedure is called to set the
- // defaultRenderGlobals.strokeDepthFile value.
- //
- global proc setRenderGlobalsDepthFile()
- {
- setAttr defaultRenderGlobals.strokesDepthFile -type "string"
- `textFieldGrp -q -fileName depthStrokesCheck`;
- }
-
- global proc mayaSoftwareGlobalsRevertToDefault()
- {
- //
- // Description:
- // This procedure is called when the user chooses Default Settings from
- // the Presets->Load Preset menu.
- // This procedure performs setAttrs on the attributes of the
- // defaultRenderGlobals, defaultResolution and defaultRenderQuality nodes
- // to set them to their default values.
- // This procedure does not attempt to deal with resolution or quality
- // nodes other than the two default nodes. In the future, this procedure
- // will be replaced by functionality in the nodePreset command that can
- // set an arbitrary node back to its default values.
- //
-
- // Set defaultRenderGlobals to default values
- //
- setAttr "defaultRenderGlobals.caching" no;
- setAttr "defaultRenderGlobals.isHistoricallyInteresting" 2;
- setAttr "defaultRenderGlobals.nodeState" 0;
- setAttr "defaultRenderGlobals.renderAll" yes;
- setAttr "defaultRenderGlobals.ignoreFilmGate" yes;
- setAttr "defaultRenderGlobals.clipFinalShadedColor" yes;
- setAttr "defaultRenderGlobals.enableDepthMaps" yes;
- setAttr "defaultRenderGlobals.enableDefaultLight" yes;
- setAttr "defaultRenderGlobals.enableStrokeRender" yes;
- setAttr "defaultRenderGlobals.oversamplePaintEffects" no;
- setAttr "defaultRenderGlobals.oversamplePfxPostFilter" no;
- setAttr "defaultRenderGlobals.onlyRenderStrokes" no;
- setAttr "defaultRenderGlobals.strokesDepthFile" -type "string" "";
- setAttr "defaultRenderGlobals.imageFormat" 7;
- setAttr "defaultRenderGlobals.pluginFormat" -type "string" "";
- setAttr "defaultRenderGlobals.gammaCorrection" 1;
- setAttr "defaultRenderGlobals.topRegion" 256;
- setAttr "defaultRenderGlobals.leftRegion" 0;
- setAttr "defaultRenderGlobals.bottomRegion" 0;
- setAttr "defaultRenderGlobals.rightRegion" 256;
- setAttr "defaultRenderGlobals.useRenderRegion" no;
- setAttr "defaultRenderGlobals.animation" no;
- setAttr "defaultRenderGlobals.animationRange" 1;
- setAttr "defaultRenderGlobals.startFrame" 1;
- setAttr "defaultRenderGlobals.endFrame" 10;
- setAttr "defaultRenderGlobals.byFrame" 1;
- setAttr "defaultRenderGlobals.byFrameStep" 1;
- setAttr "defaultRenderGlobals.modifyExtension" no;
- setAttr "defaultRenderGlobals.startExtension" 1;
- setAttr "defaultRenderGlobals.byExtension" 1;
- setAttr "defaultRenderGlobals.extensionPadding" 1;
- setAttr "defaultRenderGlobals.fieldExtControl" 0;
- setAttr "defaultRenderGlobals.stereoExtControl" 0;
- setAttr "defaultRenderGlobals.outFormatControl" 0;
- setAttr "defaultRenderGlobals.oddFieldExt" -type "string" "";
- setAttr "defaultRenderGlobals.evenFieldExt" -type "string" "";
- setAttr "defaultRenderGlobals.leftStereoExt" -type "string" "";
- setAttr "defaultRenderGlobals.rightStereoExt" -type "string" "";
- setAttr "defaultRenderGlobals.outFormatExt" -type "string" "";
- setAttr "defaultRenderGlobals.useMayaFileName" yes;
- setAttr "defaultRenderGlobals.useFrameExt" no;
- setAttr "defaultRenderGlobals.putFrameBeforeExt" no;
- setAttr "defaultRenderGlobals.imageFilePrefix" -type "string" "";
- setAttr "defaultRenderGlobals.periodInExt" yes;
- setAttr "defaultRenderGlobals.composite" no;
- setAttr "defaultRenderGlobals.compositeThreshold" 0;
- setAttr "defaultRenderGlobals.shadowsObeyLightLinking" yes;
- setAttr "defaultRenderGlobals.recursionDepth" 2;
- setAttr "defaultRenderGlobals.leafPrimitives" 200;
- setAttr "defaultRenderGlobals.subdivisionPower" 0.25;
- setAttr "defaultRenderGlobals.subdivisionHashSize" 5;
- setAttr "defaultRenderGlobals.logRenderPerformance" no;
- setAttr "defaultRenderGlobals.geometryVector" 20;
- setAttr "defaultRenderGlobals.shadingVector" 60;
- setAttr "defaultRenderGlobals.maximumMemory" 48;
- setAttr "defaultRenderGlobals.numCpusToUse" 0;
- setAttr "defaultRenderGlobals.shadowPass" no;
- setAttr "defaultRenderGlobals.iprShadowPass" no;
- setAttr "defaultRenderGlobals.useFileCache" yes;
- setAttr "defaultRenderGlobals.optimizeInstances" yes;
- setAttr "defaultRenderGlobals.reuseTessellations" yes;
- setAttr "defaultRenderGlobals.motionBlur" no;
- setAttr "defaultRenderGlobals.motionBlurByFrame" 1;
- setAttr "defaultRenderGlobals.applyFogInPost" no;
- setAttr "defaultRenderGlobals.postFogBlur" 1;
- if(!`about -evalVersion`)
- {
- setAttr "defaultRenderGlobals.preRenderMel" -type "string" "";
- setAttr "defaultRenderGlobals.postRenderMel" -type "string" "";
- }
- setAttr "defaultRenderGlobals.preFurRenderMel" -type "string" "";
- setAttr "defaultRenderGlobals.postFurRenderMel" -type "string" "";
- setAttr "defaultRenderGlobals.createIprFile" no;
- setAttr "defaultRenderGlobals.blurLength" 1;
- setAttr "defaultRenderGlobals.blurSharpness" 1;
- setAttr "defaultRenderGlobals.smoothValue" 2;
- setAttr "defaultRenderGlobals.useBlur2DMemoryCap" yes;
- setAttr "defaultRenderGlobals.blur2DMemoryCap" 200;
- setAttr "defaultRenderGlobals.motionBlurType" 1;
- setAttr "defaultRenderGlobals.useDisplacementBoundingBox" yes;
- setAttr "defaultRenderGlobals.smoothColor" no;
- setAttr "defaultRenderGlobals.keepMotionVector" no;
- setAttr "defaultRenderGlobals.iprRenderShading" yes;
- setAttr "defaultRenderGlobals.iprRenderShadowMaps" yes;
- setAttr "defaultRenderGlobals.iprRenderMotionBlur" yes;
- setAttr "defaultRenderGlobals.renderLayerEnable" no;
- setAttr "defaultRenderGlobals.renderLayerPassEnable" no;
- setAttr "defaultRenderGlobals.renderGlobalPassEnable" no;
- setAttr "defaultRenderGlobals.renderLayerSubdirs" no;
- setAttr "defaultRenderGlobals.forceTileSize" no;
- setAttr "defaultRenderGlobals.tileWidth" 64;
- setAttr "defaultRenderGlobals.tileHeight" 64;
-
- // Set defaultRenderQuality to default values
- //
- setAttr "defaultRenderQuality.caching" no;
- setAttr "defaultRenderQuality.isHistoricallyInteresting" 2;
- setAttr "defaultRenderQuality.nodeState" 0;
- setAttr "defaultRenderQuality.reflections" 1;
- setAttr "defaultRenderQuality.refractions" 6;
- setAttr "defaultRenderQuality.shadows" 2;
- setAttr "defaultRenderQuality.rayTraceBias" 0;
- setAttr "defaultRenderQuality.edgeAntiAliasing" 3;
- setAttr "defaultRenderQuality.renderSample" no;
- setAttr "defaultRenderQuality.useMultiPixelFilter" no;
- setAttr "defaultRenderQuality.pixelFilterType" 2;
- setAttr "defaultRenderQuality.pixelFilterWidthX" 2.2000000476837158;
- setAttr "defaultRenderQuality.pixelFilterWidthY" 2.2000000476837158;
- setAttr "defaultRenderQuality.plugInFilterWeight" 1;
- setAttr "defaultRenderQuality.shadingSamples" 1;
- setAttr "defaultRenderQuality.maxShadingSamples" 8;
- setAttr "defaultRenderQuality.visibilitySamples" 1;
- setAttr "defaultRenderQuality.maxVisibilitySamples" 4;
- setAttr "defaultRenderQuality.volumeSamples" 1;
- setAttr "defaultRenderQuality.particleSamples" 1;
- setAttr "defaultRenderQuality.enableRaytracing" no;
- setAttr "defaultRenderQuality.redThreshold" 0.40000000596046448;
- setAttr "defaultRenderQuality.greenThreshold" 0.30000001192092896;
- setAttr "defaultRenderQuality.blueThreshold" 0.60000002384185791;
- setAttr "defaultRenderQuality.coverageThreshold" 0.125;
-
- // Set defaultResolution to default values
- //
- setAttr "defaultResolution.caching" no;
- setAttr "defaultResolution.isHistoricallyInteresting" 2;
- setAttr "defaultResolution.nodeState" 0;
- setAttr "defaultResolution.width" 320;
- setAttr "defaultResolution.height" 240;
- setAttr "defaultResolution.pixelAspect" 0;
- setAttr "defaultResolution.aspectLock" no;
- setAttr "defaultResolution.deviceAspectRatio" 1.3333300352096558;
- setAttr "defaultResolution.lockDeviceAspectRatio" no;
- setAttr "defaultResolution.oddFieldFirst" yes;
- setAttr "defaultResolution.fields" 0;
- setAttr "defaultResolution.zerothScanline" 0;
- }
-
- // Description: This procedure is called to update all the frames
- // in the mayaSoftware software render globals tab.
- //
- global proc updateMayaSoftwareGlobalsTab()
- {
- updateFileOutputFeedback;
- if (`frameLayout -q -cl mayaSoftwareQualityFrame` == 0) {
- updateRenderQuality;
- }
- if (`frameLayout -q -cl rgRayTraceFrame` == 0) {
- updateRaytraceQuality;
- }
- if (`frameLayout -q -cl rgFieldOptionsFrame` == 0) {
- updateFieldOptions;
- }
- if (`frameLayout -q -cl rgBlurFrame` == 0) {
- updateMotionBlur;
- }
- if (`frameLayout -q -cl rgIPRFrame` == 0) {
- updateIPROptions;
- }
- if (`frameLayout -q -cl rgRenderLayerFrame` == 0) {
- updateRenderLayerOptionsUI("mayaSoftware");
- }
- if (`isTrue MayaCreatorExists`) {
- if (`frameLayout -q -cl rgUrchinFrame` == 0) {
- updateUrchinOptions;
- }
- }
- }
-